Segue 是雙向而非單向,所以除了透過 segue 切換畫面,也可以透過原本 segue 回到上一個畫面並將資料傳遞回去,這個可以返回的 segue 叫做 unwind segue。
假設要按下第一個畫面的 Button 跳到第二個畫面,在第二個畫面的 Text Field 中輸入文字按下 Button 返回第一個畫面,並且能顯示在第一個畫面的 Label 上。
在 ViewController.swift 寫一個函數,這個函數是自訂的。
@IBAction func unwind(for unwindSegue: UIStoryboardSegue) {
if unwindSegue.identifier == "unwindToFirstView" {
let vc = unwindSegue.source as! SecondViewController
outputString.text = vc.inputString.text // 不需要先傳給某個變數,因為元件已經產生
}
}
在第二個畫面的 Button 拉藍線到 Exit,鬆開滑鼠再點選「unwindFor:」,如果沒看到代表上一步函數的參數有誤。
在文件大綱點選 Unwind segue to "unwindFor:" 設定識別代號為 unwindToFirstView。